/* 
 * File:   ContextMemento.h
 * Author: Gab'z
 *
 * Created on 2 juin 2012, 19:06
 */

#ifndef CONTEXTMEMENTO_H
#define	CONTEXTMEMENTO_H

#include "Memento.h"
#include "../parameters/Parameters.h"
#include "../command/literal/StackList.h"
//#include "../command/UserCommand.h"

#include <list>

namespace calculator {
    class UndoableRedoableCommand;

    class ContextMemento : public Memento {
        friend class Eval;

    public:
        ContextMemento(UndoableRedoableCommand* undoableRedoableCommand,
                const Parameters* parameters,
                const StackList* stackList,
                const unsigned int currentStackIndex);
        virtual ~ContextMemento();

    private:
        const Parameters* _parameters;
        const StackList* _stackList;
        const unsigned int _currentStackIndex;
        ContextMemento(const ContextMemento& orig);
    };
}

#endif	/* CONTEXTMEMENTO_H */

